/* 
 * @(#)MunicipioBean.java 
 *  
 * Esta clase presenta la informacion de un municipio.  
 * 
 * @version 1.0
 * @date 01/11/12 
 * @author Oscar Castillo 
 *  
 */
package muhnes.sizoo.controlador;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import muhnes.sizoo.dal.*;
import muhnes.sizoo.modelo.Departamento;
import muhnes.sizoo.modelo.Municipio;
import muhnes.sizoo.util.Transaccion;

/**
 * Clase que contiene los metodos que controlan la vista de municipios
 * @author Oscar Castillo
 */
@ManagedBean(name = "municipioBean")
@ViewScoped
public class MunicipioBean extends CRUDBean< Municipio, MunicipioDao >  
    implements Serializable {

    private List< SelectItem > itemsDepartamentos;
    
    /**
     * Constructor de la clase
     */
    public MunicipioBean() {
        super( Municipio.class );
        vistaProtegida = "municipio";
    }
    
    /**
     * Metodo que devuelve una lista de departementos
     * @return objeto list
     */
    public List< SelectItem > getItemsDepartamentos() {
        if( itemsDepartamentos == null ) {
            itemsDepartamentos = new ArrayList< SelectItem >();
            DepartamentoDao departamentoDao = FabricaDAO.crearDepartamentoDao();
            for( Departamento departamento : departamentoDao.buscarTodos() ) {
                Departamento d = departamentoDao.removerProxy(departamento);
                SelectItem item = new SelectItem( d, d.getNombre() );
                itemsDepartamentos.add( item );
            }
        }
        return itemsDepartamentos;
    }
    
    /**
     * Metodo que instancio un nuevo MunicipioDao
     *  
     */
    @Override
    protected MunicipioDao getDAO () {
        return FabricaDAO.crearMunicipioDao();
    }

    /**
     * 
     * @param transaccion indica que transaccion se debera realizar 
     * @return objeto de tipo boolean que indica que tipo de transaccion se realizara
     */
    @Override
    protected boolean debeValidar (Transaccion transaccion) {
        boolean validacion = false;
        
        switch( transaccion ) {
            case INSERCION:
            case ACTUALIZACION:
            case ELIMINACION:
                validacion = true;
        }
        
        return validacion;
    }
    
}